Telegram Group & Telegram Channel
🎯 Как настроить CORS в Spring Boot

Когда фронт и бэк живут на разных доменах — CORS становится головной болью. Но Spring Boot даёт достаточно способов это настроить — от простых аннотаций до централизованной фильтрации.

1️⃣ Минимальная настройка — через @CrossOrigin

Если нужно открыть доступ только к одному контроллеру или методу:
@CrossOrigin(origins = "https://example.com")
@RestController
public class ApiController {
@GetMapping("/data")
public String getData() {
return "OK";
}
}


Удобно для быстрого прототипа, но неудобно для масштабируемого решения.

2️⃣ Глобальная настройка через WebMvcConfigurer

Если CORS нужен везде, лучше использовать конфигурационный класс:
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("https://example.com")
.allowedMethods("GET", "POST", "PUT", "DELETE")
.allowedHeaders("*")
.allowCredentials(true);
}
}


Даёт полный контроль. Можно задать разные правила для разных путей.

3️⃣ Настройка CORS через application.yml (Spring Cloud Gateway)

Если вы используете Gateway, настройка может быть ещё проще:
spring:
cloud:
gateway:
globalcors:
corsConfigurations:
'[/**]':
allowedOrigins: "https://example.com"
allowedMethods:
- GET
- POST
allowedHeaders: "*"


Подходит, если CORS должен работать до попадания запроса в конкретный микросервис.

4️⃣ CORS + безопасность

Если CORS работает «через раз», возможно, его блокирует Spring Security. Добавьте .cors() в конфигурацию:
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.cors() // 👈 Без этого CORS не заработает
.and()
.authorizeHttpRequests(auth -> auth.anyRequest().permitAll());
return http.build();
}
}


5️⃣ Тестирование CORS

Проверьте через curl:
curl -H "Origin: https://example.com" \
-H "Access-Control-Request-Method: GET" \
-X OPTIONS http://localhost:8080/data -v


Ответ должен содержать заголовки:
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Methods: GET


📌 Не оставляйте allowedOrigins("*") в проде. Это дыра в безопасности. Нужно чётко указывать домены.

💬 Как вы обычно настраиваете CORS в своих микросервисах?

🐸 Библиотека джависта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM



tg-me.com/javaproglib/6615
Create:
Last Update:

🎯 Как настроить CORS в Spring Boot

Когда фронт и бэк живут на разных доменах — CORS становится головной болью. Но Spring Boot даёт достаточно способов это настроить — от простых аннотаций до централизованной фильтрации.

1️⃣ Минимальная настройка — через @CrossOrigin

Если нужно открыть доступ только к одному контроллеру или методу:

@CrossOrigin(origins = "https://example.com")
@RestController
public class ApiController {
@GetMapping("/data")
public String getData() {
return "OK";
}
}


Удобно для быстрого прототипа, но неудобно для масштабируемого решения.

2️⃣ Глобальная настройка через WebMvcConfigurer

Если CORS нужен везде, лучше использовать конфигурационный класс:
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("https://example.com")
.allowedMethods("GET", "POST", "PUT", "DELETE")
.allowedHeaders("*")
.allowCredentials(true);
}
}


Даёт полный контроль. Можно задать разные правила для разных путей.

3️⃣ Настройка CORS через application.yml (Spring Cloud Gateway)

Если вы используете Gateway, настройка может быть ещё проще:
spring:
cloud:
gateway:
globalcors:
corsConfigurations:
'[/**]':
allowedOrigins: "https://example.com"
allowedMethods:
- GET
- POST
allowedHeaders: "*"


Подходит, если CORS должен работать до попадания запроса в конкретный микросервис.

4️⃣ CORS + безопасность

Если CORS работает «через раз», возможно, его блокирует Spring Security. Добавьте .cors() в конфигурацию:
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.cors() // 👈 Без этого CORS не заработает
.and()
.authorizeHttpRequests(auth -> auth.anyRequest().permitAll());
return http.build();
}
}


5️⃣ Тестирование CORS

Проверьте через curl:
curl -H "Origin: https://example.com" \
-H "Access-Control-Request-Method: GET" \
-X OPTIONS http://localhost:8080/data -v


Ответ должен содержать заголовки:
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Methods: GET


📌 Не оставляйте allowedOrigins("*") в проде. Это дыра в безопасности. Нужно чётко указывать домены.

💬 Как вы обычно настраиваете CORS в своих микросервисах?

🐸 Библиотека джависта #буст

BY Библиотека джависта | Java, Spring, Maven, Hibernate




Share with your friend now:
tg-me.com/javaproglib/6615

View MORE
Open in Telegram


Библиотека джависта | Java Spring Maven Hibernate Telegram | DID YOU KNOW?

Date: |

What is Telegram Possible Future Strategies?

Cryptoassets enthusiasts use this application for their trade activities, and they may make donations for this cause.If somehow Telegram do run out of money to sustain themselves they will probably introduce some features that will not hinder the rudimentary principle of Telegram but provide users with enhanced and enriched experience. This could be similar to features where characters can be customized in a game which directly do not affect the in-game strategies but add to the experience.

Unlimited members in Telegram group now

Telegram has made it easier for its users to communicate, as it has introduced a feature that allows more than 200,000 users in a group chat. However, if the users in a group chat move past 200,000, it changes into "Broadcast Group", but the feature comes with a restriction. Groups with close to 200k members can be converted to a Broadcast Group that allows unlimited members. Only admins can post in Broadcast Groups, but everyone can read along and participate in group Voice Chats," Telegram added.

Библиотека джависта | Java Spring Maven Hibernate from us


Telegram Библиотека джависта | Java, Spring, Maven, Hibernate
FROM USA